{{>additionalOneOfTypeAnnotations}}
{{#withXml}}
{{>xmlAnnotation}}

{{/withXml}}
{{#discriminator}}
{{>typeInfoAnnotation}}

{{/discriminator}}{{^discriminator}}{{#useDeductionForOneOfInterfaces}}
@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION)
@JsonSubTypes({
    {{#interfaceModels}}
    @JsonSubTypes.Type(value = {{classname}}.class){{^-last}}, {{/-last}}
    {{/interfaceModels}}
})
{{/useDeductionForOneOfInterfaces}}{{#vendorExtensions.x-class-extra-annotation}}{{{vendorExtensions.x-class-extra-annotation}}}
{{/vendorExtensions.x-class-extra-annotation}}
{{/discriminator}}
{{>generatedAnnotation}}

public {{>sealed}}interface {{classname}}{{#vendorExtensions.x-implements}}{{#-first}} extends {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {{>permits}}{
    {{#discriminator}}
    public {{propertyType}} {{propertyGetter}}();
    {{/discriminator}}
}